Set settings

set working directory to source file location

I) MAIZE ROOT BACTERIA

Metadata

Load metadata - Strain_Data_raw: Metadata Strains with Plate Layout (indicating which strain is in which well) - database: All information about the strains (Taxonomy, AMPO Formation, isolation etc.)

Data plates

Formatting

Data from the different runs are merged, then the time intervals between the measurements are calculated and last then the results are joined with the strain metadata of the strains. Next the density increase is calculated by subtracting the first measurement (represents inoculation density) from all subsequent measurements. This result data file is saved as raw results.

Growth curves

First the density increase in the medium control plate is plotted to check that there was no general contamination detected in the experiment.

Next the growth of all strains in the control treatment and the no bacteria control is checked.

Here the growth of two bacterial strains in one run in 6 concnetrations of MBOA and the control treatment are plotted. Pseudomonas LPD2 is MBOA-tolerant whil LRH8.O is MBOA susceptible.

Remove strains from the analysis

For some strains bad growth was detected in the growth curves. Here some strains are removed due to bad growth (LAR4, LPA11, LPE13 - LPE1.3.1), possible contamination (LMX8), unclear taxonomy (LMR1) and antibiotic tolerant strains (LPB4.R and LRH.8) are removed from the analysis. Also the data for the screen in minimal medium are removed from the analysis since this was not the interest of this screen.

Density increase

The maximal density increase maxDI is calculated from the maximal OD600 value of a strain in a given concentration of the compound (highest OD value reached over growth curve).

Density increase TSB medium

Calculate AUC

To quantify the total bacterial growth over time, we calculate the total area under the curve. This is done with the function “auc()” For comparison between treatments, the total AUC (AUC_raw) is normalized with the AUC of the strain grown in the control treatment (no chemicals added, just normal growth media with DMSO). The AUC_norm is used for all further analysis, plotting and calculations.

AUC MBOA

AUC AMPO

AUC BOA

AUC DMG

AUC APO

Combine all AUC results in one dataset

Plotting AUC

Figures for supplement

All AUC MBOA

AUC tolerant and susceptible strain in MBOA

All AUC BOA

All AUC AMPO

All AUC APO

All AUC DIMBOA-Glc

Compare concentrations and chemicals

MBOA and AMPO at 50 μM

Compare low MBOA concentrations with high AMPO concentrations [50 uM]

To investigate how many strains are susceptible to low concentrations of MBOA and AMPO (50 μM). We check for the number of strains with AUC_norm < 0.8 and statistically test (t.test) which bacteria grow significantly less in the treatment compared to the control.

MBOA

MBOA 50 μM
Strain
LWO6
MBOA 50 μM
Strain
LST15
LWO6

AMPO

## # A tibble: 20 × 3
## # Groups:   Strain [20]
##    Strain Chem_Conc AUC_norm_mean
##    <chr>  <fct>             <dbl>
##  1 LAR21  AMPO_50          0.492 
##  2 LBA1   AMPO_50          0.572 
##  3 LBA112 AMPO_50          0.602 
##  4 LBA20  AMPO_50          0.484 
##  5 LBA21  AMPO_50          0.679 
##  6 LBA3   AMPO_50          0.213 
##  7 LBA71  AMPO_50          0.640 
##  8 LMA1   AMPO_50          0.486 
##  9 LMC3   AMPO_50          0.625 
## 10 LMD1   AMPO_50          0.738 
## 11 LME1   AMPO_50          0.782 
## 12 LME2   AMPO_50          0.781 
## 13 LMI13  AMPO_50          0.718 
## 14 LMJ1   AMPO_50          0.0378
## 15 LML1   AMPO_50          0.357 
## 16 LMN1   AMPO_50          0.746 
## 17 LMO1   AMPO_50          0.707 
## 18 LMX3   AMPO_50          0.773 
## 19 LPA2   AMPO_50          0.162 
## 20 LSP13  AMPO_50          0.759
AMPO 50 μM
Strain
LAC11
LBA112
LBA20
LMB2
LMD1
LME1
LME3
LMI1
LMI11
LMI13
LMJ1
LML1
LMO1
LMS1
LMX3
LMX9231
LMY1
LMZ1
LPA2
LPB4.O
LPE13
LRH11
LSP13
LWO6
AMPO 50 μM
Strain
LAR21
LBA1
LBA112
LBA20
LBA21
LBA3
LBA71
LMA1
LMB2
LMC3
LMD1
LME1
LME2
LMI1
LMI11
LMI13
LMI15
LMI1x
LMJ1
LML1
LMN1
LMO1
LMS1
LMX3
LMX7
LPA2
LRH11
LRH8.O
LSP13
LST14
LWO6

xy Plot AMPO ~ MBOA 50 uM

MBOA and BOA 2500 50 μM

To investigate how many strains are susceptible to high concentrations of MBOA and BOA (2500 μM). We check for the number of strains with AUC_norm < 0.75 and statistically test (t.test) which bacteria grow significantly less in the treatment compared to the control.

## # A tibble: 42 × 1
## # Groups:   Strain [42]
##    Strain
##    <chr> 
##  1 LAC11 
##  2 LAR21 
##  3 LBA20 
##  4 LBA21 
##  5 LMA1  
##  6 LMB2  
##  7 LMC1  
##  8 LMC3  
##  9 LMD1  
## 10 LME1  
## # ℹ 32 more rows
MBOA 2500 μM
Strain
LBA1
LBA3
LBA71
LMB2
LME1
LME2
LMI11
LMJ1
LMX9
LMY1
LPB4.O
LPD11
LPD2
LPE13
BOA 2500 μM
Strain
LAC11
LAR21
LBA1
LBA112
LBA20
LBA21
LBA3
LMI1x
LMJ1
LST15

`

AMPO and APO [50 uM]

## # A tibble: 42 × 1
## # Groups:   Strain [42]
##    Strain
##    <chr> 
##  1 LAC11 
##  2 LAR21 
##  3 LBA20 
##  4 LBA21 
##  5 LMA1  
##  6 LMB2  
##  7 LMC1  
##  8 LMC3  
##  9 LMD1  
## 10 LME1  
## # ℹ 32 more rows
## # A tibble: 19 × 3
## # Groups:   Strain [19]
##    Strain Chem_Conc AUC_norm_mean
##    <chr>  <fct>             <dbl>
##  1 LAC11  AMPO_50          0.858 
##  2 LBA112 AMPO_50          0.602 
##  3 LBA20  AMPO_50          0.484 
##  4 LMB2   AMPO_50          0.824 
##  5 LMD1   AMPO_50          0.738 
##  6 LME1   AMPO_50          0.782 
##  7 LMI1   AMPO_50          0.852 
##  8 LMI11  AMPO_50          0.854 
##  9 LMI13  AMPO_50          0.718 
## 10 LMJ1   AMPO_50          0.0378
## 11 LML1   AMPO_50          0.357 
## 12 LMO1   AMPO_50          0.707 
## 13 LMS1   AMPO_50          0.929 
## 14 LMX3   AMPO_50          0.773 
## 15 LMZ1   AMPO_50          0.972 
## 16 LPA2   AMPO_50          0.162 
## 17 LRH11  AMPO_50          0.809 
## 18 LSP13  AMPO_50          0.759 
## 19 LWO6   AMPO_50          0.818

Tolerance index

To compare the tolerance among different bacterial strains, we use the tolerance index (TI). This tolerance index is calculated from the area under the curve of the AUC of each strain in the different concentrations of the compounds, as further normalization the normalized tolerance index is calculated from AUC_norm instead of AUC. Accordingly, a strain with TI_norm = 1 is completely tolerant to the compound in each concentration (not inhibited by the compound). Tolerance index is calculated for each compound separately using results_AUC from the respective compound.

TI MBOA

Tolerance index of tolerant and susceptible strain in MBOA

TI MBOA without high concentrations

correlation TI with TI low

AUC_tolind_MBOA_low_cor <- left_join(AUC_tolind_MBOA_low %>% dplyr::rename(TI_norm_low = TI_norm) %>% 
                                       dplyr::select(Strain, Replicate, Run, TI_norm_low), 
                                     AUC_tolind_MBOA %>% dplyr::select(Strain, Replicate, Run, Family, TI_norm), 
                                     join_by(Strain == Strain, Replicate == Replicate, Run == Run))

TI_low_cor <- AUC_tolind_MBOA_low_cor %>% 
  filter(Strain != "NBC") %>% 
  # filter(Family != "Xanthomonadaceae") %>% 
  # mutate(Run = gsub("R4", "R1", Run)) %>% 
  ggplot(aes(x = TI_norm, y = TI_norm_low)) +
  geom_point(aes(colour = Family), alpha = 0.5, show.legend = FALSE) +
  geom_smooth(method = "lm", color="black", formula = y ~ x)  + 
  # xlim(0, 1)+
  # ylim(0, 1)+
  geom_smooth(method = "lm", color="black", formula = y ~ x)  + 
  stat_cor(method = "pearson", label.x = 0.4, label.y = 0.8, cex = 15/.pt) +
  scale_colour_manual(values = results_AUC_all_level_cols_Family) +
  theme_bw() +
 labs(x = "TI",
       y = "TI low")

TI_low_cor

# ggsave(plot = TI_low_cor,  filename = "TI_low_cor.pdf", width = 9, height = 9, dpi = 300, scale = 1, units = "cm")

# ggsave(plot = TI_low_cor,  filename = "TI_low_cor.svg", width = 9, height = 9, dpi = 300, scale = 1, units = "cm")

TI MBOA at two concentrations (500 and 2500 μM)

correlation TI with TI low

AUC_tolind_MBOA_2conc_cor <- left_join(AUC_tolind_MBOA_2_conc %>% dplyr::rename(TI_norm_2conc = TI_norm) %>% 
                                       dplyr::select(Strain, Replicate, Run, TI_norm_2conc), 
                                     AUC_tolind_MBOA %>% dplyr::select(Strain, Replicate, Run, Family, TI_norm), 
                                     join_by(Strain == Strain, Replicate == Replicate, Run == Run))

TI_2conc_cor <- AUC_tolind_MBOA_2conc_cor %>% 
  filter(Strain != "NBC") %>% 
  # filter(Family != "Xanthomonadaceae") %>% 
  # mutate(Run = gsub("R4", "R1", Run)) %>% 
  ggplot(aes(x = TI_norm, y = TI_norm_2conc)) +
  geom_point(aes(colour = Family), alpha = 0.5, show.legend = FALSE) +
  geom_smooth(method = "lm", color="black", formula = y ~ x)  + 
  xlim(0, 1.3)+
  ylim(0, 1.3)+
  geom_smooth(method = "lm", color="black", formula = y ~ x)  + 
  stat_cor(method = "pearson", label.x = 0.2, label.y = 1.2, cex = 15/.pt) +
  scale_colour_manual(values = results_AUC_all_level_cols_Family) +
  theme_bw() +
 labs(x = "TI",
       y = "TI 2conc")

TI_2conc_cor
## Warning: Removed 2 rows containing non-finite values (`stat_smooth()`).
## Removed 2 rows containing non-finite values (`stat_smooth()`).
## Warning: Removed 2 rows containing non-finite values (`stat_cor()`).
## Warning: Removed 2 rows containing missing values (`geom_point()`).

# ggsave(plot = TI_2conc_cor,  filename = "TI_2conc_cor.pdf", width = 9, height = 9, dpi = 300, scale = 1, units = "cm")
# # 
# ggsave(plot = TI_2conc_cor,  filename = "TI_2conc_cor.svg", width = 9, height = 9, dpi = 300, scale = 1, units = "cm")

AUC MBOA 625 μM

TI BOA

TI AMPO

AUC DIMBOA-Glc 2500 uM

TI DIMBOA-Glc

correlation TI with TI low

AUC_tolind_AUC_DMG_cor <- left_join(AUC_tolind_DMG %>% 
                                    dplyr::select(Strain, Replicate, Run, TI_norm), 
                                    results_AUC_all %>% 
                                    filter(Run %in% c("R2")) %>% 
                                    filter(Chem %in% "DMG") %>% 
                                    filter(Conc %in% "2500") %>% 
                                    filter(AUC_norm < 2) %>% 
                                    filter(Run %in% "R2") %>% 
                                    filter(!Strain %in% "NBC") %>% 
                                    dplyr::select(Strain, Replicate, Run, Family, AUC_norm), 
                                    join_by(Strain == Strain, Replicate == Replicate, Run == Run))

DMG_TI_AUC_cor <- AUC_tolind_AUC_DMG_cor %>% 
  filter(Strain != "NBC") %>% 
  filter(!AUC_norm %in% NA) %>% 
  # filter(Family != "Xanthomonadaceae") %>% 
  # mutate(Run = gsub("R4", "R1", Run)) %>% 
  ggplot(aes(x = TI_norm, y = AUC_norm)) +
  geom_point(aes(colour = Family), alpha = 0.2, show.legend = FALSE) +
  geom_smooth(method = "lm", color="black", formula = y ~ x)  + 
  # xlim(0, 1)+
  # ylim(0, 1)+
  stat_cor(method = "pearson", label.x = 0.4, label.y = 1.8, cex = 15/.pt) +
  scale_colour_manual(values = results_AUC_all_level_cols_Family) +
  theme_bw() +
 labs(x = "TI",
       y = "AUC")

DMG_TI_AUC_cor

# ggsave(plot = DMG_TI_AUC_cor,  filename = "DMG_TI_AUC_cor.pdf", width = 9, height = 9, dpi = 300, scale = 1, units = "cm")
# 
# ggsave(plot = DMG_TI_AUC_cor,  filename = "DMG_TI_AUC_cor.svg", width = 9, height = 9, dpi = 300, scale = 1, units = "cm")

TI APO

p-value heatmaps

p-value MBOA

p-value BOA

p-value AMPO

p-value DIMBOA-Glc

p-value APO

Correlation tolerance index

To investigate if the tolerance of maize root bacteria to different benzoxazinonids and aminophenoxazinones depend on each other, we correlated the TIs of all bacteria in the different chemicals with each other.

MBOA ~ AMPO

MBOA ~ BOA

APO ~ AMPO

BOA ~ APO

MBOA ~ DIMBOA-Glc

Tolerance groups

MBOA_type MBOA BOA_type BOA AMPO_type AMPO APO_type APO
intermediate 18 intermediate 30 intermediate 4 intermediate 7
susceptible 22 susceptible 6 susceptible 4 susceptible 9
tolerant 12 tolerant 16 tolerant 44 tolerant 36
Compound p.value
MBOA 0.00010910830639201
BOA 2.5851643475067e-05
AMPO 0.0559324299277804
APO 0.00723728836215448

Effect of gram on tolerance

II) ATSPHERE BACTERIA

Data plates

Calculate density increase: substract initial density from density of each time point

Growth curves

First the density increase in the medium control plate is plotted to check that there was no general contamination detected in the experiment.

Next the growth of all strains in the control treatment and the no bacteria control is checked.

Growth of individual strains in different concentrations of MBOA.

Some strains did not grew and were therefore excluded from the analysis. In both runs: Root1294 Sphigomonas, Root420 Flavobacterium, Root482 Rhizobium, Root559 Lysobacter, Root630 Pseudoxanthomonas, in run 1: Root318D1 Variovorax, in run 2: Root166 Microbacterium.

Calculate AUC

To quantify the total bacterial growth over time, we calculate the total area under the curve. This is done with the function “auc()” For comparison between treatments, the total AUC (AUC_raw) is normalized with the AUC of the strain grown in the control treatment (no chemicals added, just normal growth media with DMSO). The AUC_norm is used for all further analysis, plotting and calculations.

Plotting AUC

Tolerance index

To compare the tolerance among different bacterial strains, we use the tolerance index. The tolerance index is calculated from the area under the curve of the AUC of each strain in the different concentrations of the compounds, as further normalization the tolerance index is calculated from AUC_norm instead of AUC. Accordingly, a strain with TI_norm = 1 is completely tolerant to the compound in each concentration (not inhibited by the compound). Tolerance index is calculated for each compound separately using results_AUC from the respective compound.

p-value heatmaps

p-value MBOA

Effect of gram on tolerance

Tolerance groups

fisher exact

Compound p.value
MBOA 0.237658243023882

Correlation TI norm MBOA MRB ~ AtSphere families

Compare families MRB ~ AtSphere

III) MICROBIOME DATA

We mapped the 16s rRNA sequences to the microbiome dataset published by Hu et al. 2018. In this study, maize wild-type plants (producing BXs) were grown along with bx1 mutant plants in the field. Then the plants were harvested and the root, the rhizosphere and the soil compartment were sequenced. The bacterial community profiles of wild-type and bx1 mutant plants differed significantely. We found that most of the MRB isolates map to taxonomic units (OTUs) in the dataset and many of them map to abundant OTUs. Here we investigate the BX-dependent colonization of these OTUs in the microbiome dataset and correlate those with the tolerance index of the strains.

In this graph the log2foldchange of OTUs on WT/bx1 roots in the field is visualized.

Stats was done like this: iso_abundance_single_data_long %>% group_by(OTU, compartment) %>% do(tidy(t.test(Abundance~genotype, data=.))) %>% add_significance(“p.value”) %>% dplyr::select(OTU, p.value, p.value.signif)

Correlation with tolerance data

MBOA root

MBOA rhizosphere

BOA

AMPO

APO

DIMBOA-Glc

DIMBOA-Glc

Corplot log2FC field

sessionInfo()
## R version 4.3.1 (2023-06-16)
## Platform: x86_64-apple-darwin20 (64-bit)
## Running under: macOS Ventura 13.3.1
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/lib/libRblas.0.dylib 
## LAPACK: /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/lib/libRlapack.dylib;  LAPACK version 3.11.0
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## time zone: Europe/Zurich
## tzcode source: internal
## 
## attached base packages:
## [1] grid      stats     graphics  grDevices utils     datasets  methods  
## [8] base     
## 
## other attached packages:
##  [1] gtable_0.3.4     ggbeeswarm_0.7.2 ggpmisc_0.5.4-1  ggpp_0.5.4      
##  [5] ggpubr_0.6.0     ggforce_0.4.1    ggplot2_3.4.3    ggthemes_4.2.4  
##  [9] rstatix_0.7.2    purrr_1.0.1      readr_2.1.4      stringr_1.5.0   
## [13] tidyr_1.3.0      dplyr_1.1.2      broom_1.0.5      lubridate_1.9.2 
## [17] readxl_1.4.2     magrittr_2.0.3   emmeans_1.8.6    multcomp_1.4-25 
## [21] TH.data_1.1-2    MASS_7.3-60      survival_3.5-5   mvtnorm_1.2-2   
## [25] lmerTest_3.1-3   lme4_1.1-33      Matrix_1.5-4.1   metacoder_0.3.6 
## [29] MESS_0.5.12     
## 
## loaded via a namespace (and not attached):
##  [1] polynom_1.4-1       sandwich_3.0-2      rlang_1.1.1        
##  [4] ggridges_0.5.4      compiler_4.3.1      mgcv_1.8-42        
##  [7] vctrs_0.6.3         quantreg_5.95       pkgconfig_2.0.3    
## [10] crayon_1.5.2        fastmap_1.1.1       backports_1.4.1    
## [13] labeling_0.4.2      utf8_1.2.3          ggstance_0.3.6     
## [16] rmarkdown_2.22      tzdb_0.4.0          haven_2.5.3        
## [19] nloptr_2.0.3        MatrixModels_0.5-1  xfun_0.39          
## [22] cachem_1.0.8        labelled_2.12.0     jsonlite_1.8.5     
## [25] highr_0.10          tweenr_2.0.2        R6_2.5.1           
## [28] bslib_0.5.0         stringi_1.7.12      car_3.1-2          
## [31] boot_1.3-28.1       jquerylib_0.1.4     cellranger_1.1.0   
## [34] numDeriv_2016.8-1.1 estimability_1.4.1  Rcpp_1.0.11        
## [37] knitr_1.43          zoo_1.8-12          splines_4.3.1      
## [40] timechange_0.2.0    tidyselect_1.2.0    rstudioapi_0.14    
## [43] abind_1.4-5         yaml_2.3.7          codetools_0.2-19   
## [46] lattice_0.21-8      tibble_3.2.1        plyr_1.8.8         
## [49] withr_2.5.0         coda_0.19-4         evaluate_0.21      
## [52] polyclip_1.10-4     pillar_1.9.0        carData_3.0-5      
## [55] generics_0.1.3      hms_1.1.3           munsell_0.5.0      
## [58] scales_1.2.1        minqa_1.2.5         xtable_1.8-4       
## [61] glue_1.6.2          clipr_0.8.0         tools_4.3.1        
## [64] SparseM_1.81        ggsignif_0.6.4      forcats_1.0.0      
## [67] colorspace_2.1-0    nlme_3.1-162        ggformula_0.10.4   
## [70] beeswarm_0.4.0      vipor_0.4.5         cli_3.6.1          
## [73] fansi_1.0.4         rematch_1.0.1       mosaicCore_0.9.2.1 
## [76] geepack_1.3.9       sass_0.4.6          digest_0.6.31      
## [79] farver_2.1.1        htmltools_0.5.5     lifecycle_1.0.3    
## [82] geeM_0.10.1